#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <set>
#include <climits>
#include <cassert>
#include <cctype>
using namespace std;

typedef long long ll;
typedef double dbl;
typedef long double ld;

#define mp make_pair
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
#define X first
#define Y second

const int maxn = 1000 * 100 + 1;
const dbl eps = (dbl)1e-6;
dbl x[maxn], rad[maxn];

bool emp(pair<dbl, dbl> a) {
	return a.X > a.Y;
}

bool is_equal(dbl a, dbl b) {
	return fabs(a - b) < eps;
}

bool is_more(dbl a, dbl b) {
	return !is_equal(a, b) && a > b;
}

int main() {
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	
	while (true) {
		int n;
		scanf("%d", &n);
		if (n == 0) break;
		for (int i = 0; i < n; i++)
			scanf("%lf%lf", &x[i], &rad[i]);
		dbl l = 0, r = maxn;
		while (r - l > eps) {
			dbl mid = (r + l) / 2.;
			pair<dbl, dbl> segm = mp(1, -1);
			bool flag = false;
			for (int i = 0; i < n; i++) {
				pair<dbl, dbl> cur_segm;
				if (is_equal(rad[i] * rad[i] - mid * mid / 4, 0) || is_more(rad[i] * rad[i] - mid * mid / 4, 0)) {
					cur_segm = mp(x[i] - sqrt(rad[i] * rad[i] - mid * mid / 4), x[i] + sqrt(rad[i] * rad[i] - mid * mid / 4));
				} else {
					cur_segm = mp(1, -1);
				}
				if (emp(segm)) {
					segm = cur_segm;
					if (is_equal(segm.Y - segm.X, mid) || is_more(segm.Y - segm.X, mid)) {
						flag = true;
						break;
					}
					continue;
				}

				if (emp(cur_segm)) continue;

				if (is_more(cur_segm.X, segm.Y)) {
					segm = cur_segm;
					if (is_equal(segm.Y - segm.X, mid) || is_more(segm.Y - segm.X, mid)) {
						flag = true;
						break;
					}
					continue;
				} else {
					segm.X = min(segm.X, cur_segm.X);
					segm.Y = max(segm.Y, cur_segm.Y);
					if (is_equal(segm.Y - segm.X, mid) || is_more(segm.Y - segm.X, mid)) {
						flag = true;
						break;
					}
				}				
			}

			if (flag) l = mid;
			else r = mid;
		}
		printf("%.8lf\n", l);
	}
	
	return 0;
}